package 并发编程09.安全发布类型5;

/**
 * 通常单例建议用枚举来进行实现，枚举在编译之后实际上是一个ENUM类，
 * 它里面的很多枚举对象都被装载在了静态块中，因此是线程安全的
 * @author idea
 * @data 2019/1/24
 */
public class SingletonDemo5 {

    private SingletonDemo5(){

    }

    //通过枚举类获取单例
    public static SingletonDemo5 getInstance(){
        return Singleton.INSTANCE.getInstance();
    }

    private enum Singleton{
        INSTANCE;

        private SingletonDemo5 singleton;

        Singleton(){
            singleton=new SingletonDemo5();
        }

        public SingletonDemo5 getInstance(){
            return singleton;
        }
    }

    public static void main(String[] args) {
        SingletonDemo5 singletonDemo5=getInstance();
        System.out.println(singletonDemo5);
    }
}
